using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;


namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Traduz um contrato de dados em um modelo
    /// </summary>
    public class ManutencaoOrdens
    {
		public ManutencaoOrdens(){}

		/// <summary>
        /// ToDetalheOrdem
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
		public Model.DetalheOrdem ToDetalheOrdem(Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.DetalheOrdemResponse from)
        {
            Model.DetalheOrdem retorno = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.DetalheOrdem();

            if (from == null)
                return null;

            retorno.Ativo = from.Ativo;
            retorno.Carteira = from.Carteira;
            retorno.DataOrdem = from.DataOrdem;

            switch (from.Mercado.Value)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Vista:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Vista;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.OpcaoCompra:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoCompra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.OpcaoVenda:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoVenda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.ExercicioOpcaoCompra:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoCompra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.ExercicioOpcaoVenda:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoVenda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Fracionario:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Fracionario;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Estruturado:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Estruturado;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Leilao:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Leilao;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Termo:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Termo;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.LeilaoNaoCotados:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.LeilaoNaoCotados;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Futuro:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Futuro;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.VencimentoFuturo:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.VencimentoFuturo;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.BOX:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.BOX;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.CotasETF:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.CotasETF;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.IntegralizacaoResgateCotas:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.IntegralizacaoResgateCotas;
                    break;
            }

            switch (from.NaturezaOperacao.Value)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.Compra:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Compra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.Venda:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Venda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.CompraVenda:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.CompraVenda;
                    break;
            }

            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            retorno.PrazoVencimentoTermo = from.PrazoVencimentoTermo;
            retorno.Preco = from.Preco;
            retorno.Quantidade = from.Quantidade;
            retorno.QuantidadeExecutada = from.QuantidadeExecutada;

            return retorno;
		}

		/// <summary>
        /// ToDetalheOrdem - LIST
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public ModelCollection<Model.DetalheOrdem> ToDetalheOrdem(List<Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.DetalheOrdemResponse> from)
        {
            ModelCollection<Model.DetalheOrdem> lista = new ModelCollection<Sinacor.UI.Bovespa.ManutencaoOrdens.Model.DetalheOrdem>();
            Model.DetalheOrdem item = null;

            if (from == null)
                return null;

            foreach (Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.DetalheOrdemResponse inLista in from)
            {
                item = this.ToDetalheOrdem(inLista);
                lista.Add(item);
            }

            return lista;
		}

		/// <summary>
        /// ToOrdem
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public Model.Ordem ToOrdem(Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.OrdemResponse from)
        {
            Model.Ordem retorno = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Ordem();

            if (from == null)
                return null;

            retorno.ApelidoCliente = from.ApelidoCliente;
            retorno.Ativo = from.Ativo;
            retorno.Carteira = from.Carteira;
            retorno.CodigoBolsa = from.CodigoBolsa;
            retorno.NomeBolsa = from.NomeBolsa;
            retorno.CodigoBrokerCliente = from.CodigoBrokerCliente;
            retorno.CodigoCasamento = from.CodigoCasamento;
            retorno.CodigoCliente = from.CodigoCliente;
            retorno.CodigoISIN = from.CodigoISIN;
            retorno.CodigoOperador = from.CodigoOperador;
            retorno.CodigoUsuario = from.CodigoUsuario;
            retorno.ComplementoNomeCliente = from.ComplementoNomeCliente;
            retorno.DataHoraOrdem = from.DataHoraOrdem;
            retorno.DataOrdem = from.DataOrdem;
            retorno.DataValidade = from.DataValidade;
            retorno.DescricaoAtivo = from.DescricaoAtivo;
            retorno.DigitoCliente = from.DigitoCliente;
            retorno.Discricionaria = from.Discricionaria;
            retorno.Distribuida = from.Distribuida;
            retorno.IndicadorCasaOrdem = from.IndicadorCasaOrdem;
            retorno.IndicadorClientePessoaVinculada = from.IndicadorClientePessoaVinculada.Value;
            retorno.IndicadorDesprezaSaldo = from.IndicadorDesprezaSaldo.Value;
            retorno.IndicadorGravaLog = from.IndicadorGravaLog;
            retorno.IndicadorLiquidacaoExterna = from.IndicadorLiquidacaoExterna;
            retorno.IndicadorOrdemAdmConcorrente = from.IndicadorOrdemAdmConcorrente.Value;
            retorno.IndicadorOrigemMegaBolsa = from.IndicadorOrigemMegaBolsa;
            retorno.IndicadorSistemaExterno = from.IndicadorSistemaExterno;
            retorno.LoginOperador = from.LoginOperador;

            switch (from.Mercado)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Vista:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Vista;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.OpcaoCompra:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoCompra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.OpcaoVenda:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoVenda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.ExercicioOpcaoCompra:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoCompra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.ExercicioOpcaoVenda:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoVenda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Fracionario:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Fracionario;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Estruturado:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Estruturado;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Leilao:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Leilao;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Termo:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Termo;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.LeilaoNaoCotados:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.LeilaoNaoCotados;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.Futuro:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Futuro;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.VencimentoFuturo:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.VencimentoFuturo;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.BOX:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.BOX;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.CotasETF:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.CotasETF;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoMercado.IntegralizacaoResgateCotas:
                    retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.IntegralizacaoResgateCotas;
                    break;
            }

            retorno.NomeCliente = from.NomeCliente;
            retorno.NomeEmissor = from.NomeEmissor;
            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroOrdemOriginal = from.NumeroOrdemOriginal;
            retorno.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            retorno.Observacao = from.Observacao;
            retorno.PercentualCorretagem = from.PercentualCorretagem;
            retorno.PercentualFinanciamento = from.PercentualFinanciamento;
            retorno.PossuiPreBoleto = from.PossuiPreBoleto;
            retorno.PrazoVencimentoTermo = from.PrazoVencimentoTermo;
            retorno.Preco = from.Preco;
            retorno.PrecoMedio = from.PrecoMedio;
            retorno.Quantidade = from.Quantidade;
            retorno.QuantidadeAnexoIV = from.QuantidadeAnexoIV;
            retorno.QuantidadeAnexoV = from.QuantidadeAnexoV;
            retorno.QuantidadeCanceladaOferta = from.QuantidadeCanceladaOferta;
            retorno.QuantidadeExecutada = from.QuantidadeExecutada;

            switch (from.Situacao)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoOrdem.Cancelada:
                    retorno.Situacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoOrdem.Cancelada;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoOrdem.HomeBroker:
                    retorno.Situacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoOrdem.HomeBroker;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoOrdem.AbertaViaSinalNegocio:
                    retorno.Situacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoOrdem.AbertaViaSinalNegocio;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoOrdem.Exercicio:
                    retorno.Situacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoOrdem.Exercicio;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoOrdem.Demais:
                    retorno.Situacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoOrdem.Demais;
                    break;
            }

            switch(from.SituacaoCasamento)
            {
                case Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoCasamento.Casada:
                    retorno.SituacaoCasamento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoCasamento.Casada;
                    break;
                case Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoCasamento.ParcialmenteCasada:
                    retorno.SituacaoCasamento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoCasamento.ParcialmenteCasada;
                    break;
                case Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SituacaoCasamento.NaoCasada:
                    retorno.SituacaoCasamento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.SituacaoCasamento.NaoCasada;
                    break;                
                default:
                    break;
            }

            if (from.NaturezaOperacao.HasValue)
            {
                switch (from.NaturezaOperacao.Value)
                {
                    case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.Compra:
                        retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Compra;
                        break;
                    case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.Venda:
                        retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Venda;
                        break;
                    case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.NaturezaOperacao.CompraVenda:
                        retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.CompraVenda;
                        break;
                }
            }
            switch (from.TipoDistribuicao)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.NaoDistribuida:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.NaoDistribuida;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.Distribuida:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.Distribuida;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.PrecoDigitado:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.PrecoDigitado;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.PrecoMedio:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.PrecoMedio;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.DistribuicaoLote:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.DistribuicaoLote;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.AdmConcorrenteDistribuida:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.AdmConcorrenteDistribuida;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.AdmConcorrenteCongelada:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.AdmConcorrenteCongelada;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicao.DistribuicaoIMercado:
                    retorno.TipoDistribuicao = Model.Enum.TipoDistribuicao.DistribuicaoIMercado;
                    break;
            }

            switch (from.TipoDistribuicaoPermitida)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicaoPermitida.Normal:
                    retorno.TipoDistribuicaoPermitida = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoDistribuicaoPermitida.Normal;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicaoPermitida.DiferenciadoPOP:
                    retorno.TipoDistribuicaoPermitida = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoDistribuicaoPermitida.DiferenciadoPOP;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrente:
                    retorno.TipoDistribuicaoPermitida = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrente;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrentePOP:
                    retorno.TipoDistribuicaoPermitida = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoDistribuicaoPermitida.DiferenciadoAdministradoConcorrentePOP;
                    break;
            }

            if (from.TipoLiquidacao != null)
            {
                switch (from.TipoLiquidacao.Value)
                {
                    case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoLiquidacao.Custodiante:
                        retorno.TipoLiquidacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoLiquidacao.Custodiante;
                        break;
                    case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoLiquidacao.Normal:
                        retorno.TipoLiquidacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoLiquidacao.Normal;
                        break;
                }
            }

            switch (from.TipoOrdem.Value)
            {
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.Mercado:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.Mercado;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.Casada:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.Casada;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.Administrada:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.Administrada;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.Limitada:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.Limitada;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.Financiamento:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.Financiamento;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.TipoOrdem.OnStop:
                    retorno.TipoOrdem = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoOrdem.OnStop;
                    break;
            }
            
            retorno.ValorDolar = from.ValorDolar;
            retorno.ValorFinanciamento = from.ValorFinanciamento;
            retorno.Volume = from.Volume;
            retorno.Saldo = from.Saldo;

            retorno.ValorOrdem = ToValorOrdem(from.ValorOrdem);

            return retorno;
		}

		/// <summary>
        /// ToOrdem - LIST
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public ModelCollection<Model.Ordem> ToOrdem(List<Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.OrdemResponse> from)
        {
            ModelCollection<Model.Ordem> lista = new ModelCollection<Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Ordem>();
            Model.Ordem item = null;

            if (from == null)
                return null;

            foreach (Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.OrdemResponse inLista in from)
            {
                item = this.ToOrdem(inLista);
                lista.Add(item);
            }

            return lista;
		}

        /// <summary>
        /// ToChaveOrdem
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public Model.ChaveOrdem ToChaveOrdem(Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.ChaveOrdemResponse from)
        {
            Model.ChaveOrdem to = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.ChaveOrdem();

            to.DataOrdem = from.DataOrdem;
            to.NumeroOrdem = from.NumeroOrdem;
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;

            return to;
        }

        public Model.Saldo ToSaldo(Communication.Bovespa.ManutencaoOrdens.ManutencaoOrdem.SaldoResponse from)
        {
            Model.Saldo to = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Saldo();

            to.Valor = from.Valor;

            return to;
        }

        public Model.ValorOrdem ToValorOrdem(Bovespa.ManutencaoOrdens.ManutencaoOrdem.ValorOrdemResponse from)
        {
            Model.ValorOrdem to = null;

            if (from != null)
            {
                to = new Model.ValorOrdem();
                to.ValorExecutado = from.ValorExecutado;
                to.ValorNaoExecutado = from.ValorNaoExecutado;
                to.ValorTotal = from.ValorTotal;
            }

            return to;
        }
	}
}